home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / P_ROBO31.ZIP / TROUBLE3.PR < prev    next >
Text File  |  1989-10-31  |  3KB  |  92 lines

  1. (**************************************************************************)
  2. (*                             W A R N I N G                              *)
  3. (*                                                                        *)
  4. (*  This Robot has NOT been designed to take advantage of the advanced    *)
  5. (*  features of P-ROBOTS, such as, Shields, Fuel, Teams or Obstructions.  *)
  6. (**************************************************************************)
  7.  
  8.   PROCEDURE Trouble3;
  9.  
  10.   VAR Dir : Integer;
  11.     Ang : Integer;
  12.     Dist : Integer;
  13.     Width : Integer;
  14.     Incr : Integer;
  15.  
  16.   BEGIN                           { Main routine }
  17.  
  18.     Dir := 0;
  19.     Width := 10;
  20.     Incr := 20;
  21.     Ang := Angle_To(1000, 1000);
  22.  
  23.     REPEAT                        { Main loop }
  24.  
  25.       WHILE (loc_y < 850) DO
  26.         BEGIN
  27.           DRIVE(Ang, 100);
  28.           Dist := SCAN(Dir, Width);
  29.           IF Dist > 45 THEN
  30.             BEGIN
  31.               CANNON(Dir, Dist);
  32.               CANNON(Dir, Dist);
  33.             END
  34.           ELSE
  35.             Dir := Dir+Incr;
  36.         END;
  37.       DRIVE(Ang, 0);
  38.       Ang := Angle_To(500, 0);
  39.       WHILE (speed > 40) DO Ang := Angle_To(500, 0);
  40.  
  41.       WHILE (loc_y > 150) DO
  42.         BEGIN
  43.           DRIVE(Ang, 100);
  44.           Dist := SCAN(Dir, Width);
  45.           IF Dist > 45 THEN
  46.             BEGIN
  47.               CANNON(Dir, Dist);
  48.               CANNON(Dir, Dist);
  49.             END
  50.           ELSE
  51.             Dir := Dir+Incr;
  52.         END;
  53.       DRIVE(Ang, 0);
  54.       Ang := Angle_To(0, 1000);
  55.       WHILE (speed > 40) DO Ang := Angle_To(0, 1000);
  56.  
  57.       WHILE (loc_y < 850) DO
  58.         BEGIN
  59.           DRIVE(Ang, 100);
  60.           Dist := SCAN(Dir, Width);
  61.           IF Dist > 45 THEN
  62.             BEGIN
  63.               CANNON(Dir, Dist);
  64.               CANNON(Dir, Dist);
  65.             END
  66.           ELSE
  67.             Dir := Dir+Incr;
  68.         END;
  69.       DRIVE(Ang, 0);
  70.       Ang := Angle_To(500, 0);
  71.       WHILE (speed > 40) DO Ang := Angle_To(500, 0);
  72.  
  73.       WHILE (loc_y > 150) DO
  74.         BEGIN
  75.           DRIVE(Ang, 100);
  76.           Dist := SCAN(Dir, Width);
  77.           IF Dist > 45 THEN
  78.             BEGIN
  79.               CANNON(Dir, Dist);
  80.               CANNON(Dir, Dist);
  81.             END
  82.           ELSE
  83.             Dir := Dir+Incr;
  84.         END;
  85.       DRIVE(Ang, 0);
  86.       Ang := Angle_To(1000, 1000);
  87.       WHILE (speed > 40) DO Ang := Angle_To(1000, 1000);
  88.  
  89.     UNTIL DEAD OR WINNER;
  90.  
  91.   END;                            { End Trouble3 Main }
  92.